A technique commonly used in computer graphics involves rendering images using objects such as polygons, triangles, and lines. Such images are typically rendered in computer games, in computer aided design tools, in computer graphic art tools, etc. Generating graphic images sufficiently fast to meet high-speed performance requirements can require substantial hardware resources. Rendering 3D graphics, in particular, often requires a large amount of processing using dedicated hardware resources. To meet those requirements, a primarily pipelined architecture has proven most efficient. In pipelined architecture, a task is distributed into several serialized units. For example, high-level tasks, such as convolution and triangle rendering, can be distributed among a series of units. Multiple pipelines can also be operated in parallel to produce multiple outputs of picture elements (pixels). For instance, 3D graphics processors can use eight parallel pipelines to produce eight, 32-bit pixels every cycle, making use of parallel processing, but in a primarily pipelined architecture.
In contrast to rendering graphic images using primitive graphic objects, media processing includes any process that generates new media output data from an original source of media data. For example, imaging or image processing includes any process that generates a new image from an original image. Imaging includes image enhancement, restoration, reconstruction, compression, decompression, or other processing of original media. Similarly, video processing applies the above functions to a sequence of images derived from various types of original media. Further, audio processing produces a new audio output from source audio data.
Media processing typically requires a different set of dedicated hardware resources than those used for rendering graphic images. For media processing, a primarily parallel architecture has proven most efficient. In a parallel architecture, several independent tasks are distributed among several parallel units. An example of a parallel architecture includes a conventional reduced instruction set computer (RISC) architecture with parallel processing features. Specific examples of media processors that utilize a parallel architecture include the TMS320C80™ by Texas Instruments Corp. and the media accelerated processor (MAP™) developed together by Hitachi Corporation and Equator Corporation. Parallel processing features include very long instruction word (VLIW) processing capability and single instruction multiple data (SIMD) processing capability. These features exploit the instruction-level and data-level parallelisms inherent in most imaging and video processing algorithms.
Although these features can provide high performance in imaging and video processing, the performance gain is limited by the amount of parallelism that can be mapped to the parallel processing units. To further improve performance, pipelining can also be used to accelerate individual units within the parallel architecture, such as for implementing a functional unit and a cache. Thus, media processors tend to employ some pipelining aspects, but in a primarily parallel processing architecture.
Attempts have been made to combine media processing with graphics processing. For example, U.S. Pat. No. 5,467,459 discloses a system that includes a parallel architecture for image processing, and includes a pipelined architecture for graphics processing. The parallel architecture and pipelined architecture are interconnected by a high-speed data bus to a high-bandwidth central shared memory. Although interconnected, this system still maintains separate architectures for processing media and graphics. It is preferable, instead, to utilize shared hardware resources to accomplish both parallel image processing and pipelined graphics processing. It is further desirable to utilize shared hardware resources to perform multimedia processing in general, including image processing, video processing, sound processing, and animation processing, as well as graphics processing. Sharing resources results in fewer transistors and other hardware components on a graphics processor and lower power consumption, which reduces costs.